#include <iostream>

#include "LireSorts.h"

#include "ATL.h"

#include "lib.h"

using namespace std;

int main( int argc, char * argv[] )
{
  cout << "########################################" << endl
       << "Teste la lecture auto de ListeSorts.xml" << endl << endl
       << "Affiche la liste des sorts de l'école" << endl
       << "dont le numéro est donné en argument" << endl
       << "ou de l'école universelle par défaut." << endl
       << "########################################" << endl << endl;

  LireSorts lSort;

  StatusCode sc( lSort.init() );

  if ( ! sc )
    {
      sc.afficher();
      return sc.code();
    }

  const vector< vector< vector< SortsEcoles > > > * tout;
  const vector< vector< SortsEcoles > > * uneEcole;

  unsigned numEcole( 20 );

  if ( argc > 1 )
    {
      if ( ! lireString( string( argv[1] ), numEcole ) )
	   numEcole = 20;
    }

  tout = lSort.listeSorts();
  uneEcole = lSort.listeSorts( numEcole );

  cout << "Nombre d'écoles : " << tout -> size() << endl;
  if ( uneEcole == 0 )
    return 0;
  cout << "Nombre de niveaux de sort dans l'école n° " << numEcole << " : "
	  << uneEcole -> size() << endl;

  vector< SortsEcoles >::const_iterator sortIt, sortBegin, sortEnd;

  vector< vector< SortsEcoles > >::const_iterator nivIt, nivBegin, nivEnd;

  nivBegin = uneEcole -> begin();
  nivEnd   = uneEcole -> end();

  for ( nivIt = nivBegin; nivIt != nivEnd; nivIt++ )
    {
      sortBegin = nivIt -> begin();
      sortEnd   = nivIt -> end();
      cout << endl << "Niveau " << unsigned( nivIt - nivBegin + 1 ) 
	   << " : "<< endl;
      for ( sortIt = sortBegin; sortIt != sortEnd; sortIt++ )
	cout << " - "<< sortIt -> nom() << endl;
    }

  return 0;
}
